From 1cbcccd120b71bdd08a0a74275211a6774416ed7 Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild2.aw" Date: Wed, 14 Mar 2007 09:33:40 -0600 Subject: [PATCH] [IA64] Use domheap instead of xenheap for P2M table This allows larger memory configurations without exhausting xenheap. New boot option 'p2m_xenheap' reverts to previous behavior. Signed-off-by: Kouya Shimura --- xen/arch/ia64/xen/mm.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/xen/arch/ia64/xen/mm.c b/xen/arch/ia64/xen/mm.c index 4d11f1b76b..03a71a7f9e 100644 --- a/xen/arch/ia64/xen/mm.c +++ b/xen/arch/ia64/xen/mm.c @@ -1903,9 +1903,20 @@ void __free_pages(struct page_info *page, unsigned int order) free_xenheap_page(page); } +static int opt_p2m_xenheap; +boolean_param("p2m_xenheap", opt_p2m_xenheap); + void *pgtable_quicklist_alloc(void) { void *p; + if (!opt_p2m_xenheap) { + struct page_info *page = alloc_domheap_page(NULL); + if (page == NULL) + return NULL; + p = page_to_virt(page); + clear_page(p); + return p; + } p = alloc_xenheap_pages(0); if (p) clear_page(p); @@ -1914,7 +1925,10 @@ void *pgtable_quicklist_alloc(void) void pgtable_quicklist_free(void *pgtable_entry) { - free_xenheap_page(pgtable_entry); + if (!opt_p2m_xenheap) + free_domheap_page(virt_to_page(pgtable_entry)); + else + free_xenheap_page(pgtable_entry); } void put_page_type(struct page_info *page) -- 2.30.2